package com.ruoyi.project.modules.virtualUsageParamSource.mapper;

import java.util.List;
import com.ruoyi.project.modules.virtualUsageParamSource.domain.VirtualUsageParamSource;
import org.apache.ibatis.annotations.Param;

/**
 * 虚拟用况入参来源Mapper接口
 * 
 * @author smallrain
 * @date 2022-03-31
 */
public interface VirtualUsageParamSourceMapper 
{
    /**
     * 查询虚拟用况入参来源
     * 
     * @param virtualUsageParamSourceId 虚拟用况入参来源主键
     * @return 虚拟用况入参来源
     */
    public VirtualUsageParamSource selectVirtualUsageParamSourceByVirtualUsageParamSourceId(Long virtualUsageParamSourceId);

    /**
     * 查询虚拟用况入参来源列表
     * 
     * @param virtualUsageParamSource 虚拟用况入参来源
     * @return 虚拟用况入参来源集合
     */
    public List<VirtualUsageParamSource> selectVirtualUsageParamSourceList(VirtualUsageParamSource virtualUsageParamSource);

    /**
     * 新增虚拟用况入参来源
     * 
     * @param virtualUsageParamSource 虚拟用况入参来源
     * @return 结果
     */
    public int insertVirtualUsageParamSource(VirtualUsageParamSource virtualUsageParamSource);

    /**
     * 修改虚拟用况入参来源
     * 
     * @param virtualUsageParamSource 虚拟用况入参来源
     * @return 结果
     */
    public int updateVirtualUsageParamSource(VirtualUsageParamSource virtualUsageParamSource);

    /**
     * 删除虚拟用况入参来源
     * 
     * @param virtualUsageParamSourceId 虚拟用况入参来源主键
     * @return 结果
     */
    public int deleteVirtualUsageParamSourceByVirtualUsageParamSourceId(Long virtualUsageParamSourceId);

    /**
     * 批量删除虚拟用况入参来源
     * 
     * @param virtualUsageParamSourceIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVirtualUsageParamSourceByVirtualUsageParamSourceIds(String[] virtualUsageParamSourceIds);

    List<VirtualUsageParamSource> selectVirtualUsageParamSourceList2(VirtualUsageParamSource virtualUsageParamSource);

    void batchSave(@Param("virtualUsageParamSourceList") List<VirtualUsageParamSource> virtualUsageParamSourceList);

    int update(@Param("virtualUsageParamSource") VirtualUsageParamSource virtualUsageParamSource);

    void delete(@Param("sourceObjectIds") List<Long> sourceObjectIds, @Param("sourceType") String sourceType);
    void deleteByObjectId(@Param("objectIds") List<Long> objectIds, @Param("type") String type);

    void deleteByObjectIdAndType(@Param("objectId") Long objectId, @Param("type") String type);

    void batchDeleteByProcessBranchIds(@Param("processBranchIds") List<Long> processBranchIds);

    void batchDeleteBySourceProcessBranchIds(@Param("processBranchIds") List<Long> processBranchIds);
}
